home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 014 / libtools.arc / STARS3.AQM / STARS3.ASM
Encoding:
Assembly Source File  |  1984-04-08  |  2.3 KB  |  173 lines

  1.     TITLE    STARPLOT
  2. STACK    SEGMENT PARA    STACK
  3.     DB    20 DUP('STACK   ')
  4. STACK    ENDS
  5.  
  6. DATA    SEGMENT PARA    PUBLIC
  7. NUMB    EQU    40H
  8. LENTH    EQU    0CH
  9. PONT    DW    NUMB*LENTH DUP(0)
  10. SIX    EQU    7FC0H
  11. SIXH    EQU    0A000H
  12. ZER    EQU    0
  13. TWO    EQU    3FC0H
  14. TWOH    EQU    3200H
  15. ADDR    DW    0
  16. TEMP    DW    ?
  17. LOWER    EQU    0040H
  18. SPEED    DB    6
  19. TOPE    DW    ?
  20. DATA    ENDS
  21.  
  22. CODE    SEGMENT PARA    PUBLIC
  23. START    PROC    FAR
  24. ASSUME    CS:CODE,DS:DATA,SS:STACK,ES:NOTHING
  25.     PUSH    DS
  26.     SUB    AX,AX
  27.     PUSH    AX
  28.     MOV    AX,DATA
  29.     MOV    DS,AX
  30.  
  31.     MOV    AL,0B6H
  32.     OUT    43H,AL
  33. ;    MOV    AX,0FFFFH
  34.         MOV     AX,533H            ;DIVISOR FOR 1000 HZ
  35.     OUT    42H,AX
  36.     CALL    CLS
  37.     MOV    AX,06
  38.     INT    10H
  39.     MOV    BX,OFFSET PONT
  40.     MOV    SI,0
  41. UP:    CALL    POINT_MAKER
  42.     ADD    SI,LENTH
  43.     CMP    SI,NUMB*LENTH
  44.     JNE    UP
  45. HERE:    MOV    SI,0
  46. WUP:    MOV    CL,SPEED
  47.     MOV    AX,[BX+SI]
  48.     MOV    DX,[BX+SI+4]
  49.     SAR    DX,CL
  50.     ADD    AX,DX
  51.     MOV    [BX+SI+8],AX
  52.     MOV    AX,[BX+SI+2]
  53.     MOV    DX,[BX+SI+6]
  54.     SAR    DX,CL
  55.     ADD    AX,DX
  56.     MOV    [BX+SI+0AH],AX
  57.     CALL    PRESET
  58.     CALL    PSET
  59.     MOV    AX,[BX+SI+8]
  60.     MOV    [BX+SI],AX
  61.     MOV    CX,[BX+SI+0AH]
  62.     MOV    [BX+SI+2],CX
  63.     CMP    AX,SIXH
  64.     JAE    GOSUB
  65.     CMP    AX,LOWER
  66.     JBE    GOSUB
  67.     CMP    CX,TWOH
  68.     JAE    GOSUB
  69.     CMP    CX,LOWER
  70.     JBE    GOSUB
  71.     JMP    NEXT
  72. GOSUB:    CALL    PRESET
  73.     CALL    POINT_MAKER
  74. NEXT:    ADD    SI,LENTH
  75.     CMP    SI,NUMB*LENTH
  76.     JNE    WUP
  77.     MOV    AH,0BH
  78.     INT    21H
  79.     CMP    AL,0FFH
  80.     JNE    HERE
  81.     MOV    AH,07
  82.     INT    21H
  83.     CMP    AL,30H
  84.     JB    RETN
  85.     CMP    AL,3AH
  86.     JAE    RETN
  87.     AND    AL,0FH
  88.     MOV    SPEED,AL
  89.     JMP    HERE
  90.  
  91. RETN:    MOV    AX,2
  92.     INT    10H
  93.     RET
  94. START    ENDP
  95.  
  96. POINT_MAKER    PROC    NEAR
  97.     MOV    CL,SPEED
  98. TOP:    CALL    RANDO
  99.     AND    DX,7FC0H
  100.     CMP    DX,LOWER
  101.     JBE    TOP
  102.     MOV    [BX+SI],DX
  103. NEY:    CALL    RANDO
  104.     AND    DX,3FC0H
  105.     CMP    DX,LOWER
  106.     JBE    NEY
  107.     MOV    [BX+SI+2],DX
  108.     MOV    AX,[BX+SI]
  109.     SUB    AX,5000H
  110.     MOV    [BX+SI+4],AX
  111.     MOV    AX,[BX+SI+2]
  112.     SUB    AX,1900H
  113.     MOV    [BX+SI+6],AX
  114.     RET
  115. POINT_MAKER    ENDP
  116.  
  117. RANDO    PROC    NEAR
  118.     PUSH    BX
  119.     PUSH    AX
  120.     IN    AX,42H
  121. ZERO:    MOV    BX,ADDR
  122.     ADD    DX,[BX]
  123.     INC    BX
  124.     INC    BX
  125.     MOV    ADDR,BX
  126.     XOR    DX,[BX+SI]
  127.     SAR    AX,1
  128.     XOR    DX,AX
  129.     ADD    DX,TOPE
  130.     MOV    TOPE,DX
  131.     POP    AX
  132.     POP    BX
  133.     RET
  134. RANDO    ENDP
  135.  
  136. CLS    PROC    NEAR
  137.     MOV    CX,0
  138.     MOV    DX,2479H
  139.     MOV    BH,7
  140.     MOV    AX,600H
  141.     INT    10H
  142.     RET
  143. CLS    ENDP
  144.  
  145. PSET    PROC    NEAR
  146.     MOV    CL,6
  147.     MOV    AX,[BX+SI+8]
  148.     SHR    AX,CL
  149.     MOV    DX,[BX+SI+0AH]
  150.     SHR    DX,CL
  151.     MOV    CX,AX
  152.     MOV    AH,12
  153.     MOV    AL,1
  154.     INT    10H
  155.     RET
  156. PSET    ENDP
  157.  
  158. PRESET    PROC    NEAR
  159.     MOV    CL,6
  160.     MOV    AX,[BX+SI]
  161.     SHR    AX,CL
  162.     MOV    DX,[BX+SI+2]
  163.     SHR    DX,CL
  164.     MOV    CX,AX
  165.     MOV    AH,12
  166.     MOV    AL,0
  167.     INT    10H
  168.     RET
  169.  
  170. CODE    ENDS
  171.  
  172.     END
  173.